package com.itbaizhan;
//包装类的使用  8种基本数据类型  位于java.lang包
/*byte --Byte   boolean--Boolean  short--Short  char--Character
* int--Integer  long -- Long  float-- Float  double -- Double*/
//Number类是抽象类 Byte Short Integer Long Float Double
/*用途：
*   1，作为和基本数据类型存在，方便涉及到对象的操作，如Object[]、集合的操作
*   2，包含每种基本数据类型的相关属性如最大值、最小值等，以及相关的操作方法（
*   这些操作方法的作用是基本数据类型、包装类对象、字符串之间提供相互的转化） */
public class TestInteger {
    public static void main(String[] args) {
        Integer i = new Integer(50);//从java开始被废弃
        Integer j = Integer.valueOf(10);//官方推荐

        int a =j.intValue();//把包装类对象转成基本数据类型
        double b = j.doubleValue();

        //把字符串转成数字
        Integer n = Integer.valueOf("456");
       // Integer m = Integer.valueOf("432adw");报错数字与字母不可以在一起
        System.out.println(Integer.MAX_VALUE);

       // 测试自动装箱和拆箱
        //装箱
        Integer x =  100; //编译器自动编译，等于Integer x = Integer.valueOf(100);
        //拆箱
        int y = x;//编译器：int y = x.intValue();

       /* Integer z = null; //会报错，空指针
        int z2 = z;  //编译器：int z2 = z.intValue();*/

        //测试缓存问题
        // Integer自动装箱时 [-128,127]之间的数有缓存
        Integer x1 = 100; //自动装箱
        Integer x2 = 100; //相当于：Integer = Integer.valueOf(100);
        Integer x3 = 500;
        Integer x4 = 500; //不在数组[-128,127]会创建新对象
        System.out.println(x1==x2);//true
        System.out.println(x3==x4);//false 因为不在[-128,127]
        System.out.println(x1.equals(x2));
        System.out.println(x3.equals(x4));//true

    }
}
